草庐IT

C++ ostringstream 奇怪的行为

全部标签

c++ - 为什么不完整类型的智能指针数据成员和原始指针数据成员在其父级析构时具有不同的行为?

在下面的代码中:智能指针数据成员pImpl(classImpl)和原始指针pc(classCAT)都是不完整的数据类型,Widget.h中没有这两个类的定义//控件.h#ifndefW_H_#defineW_H_#includeclassWidget{public:Widget();~Widget(){//deletepc;//IknowIshouldput~Widgetto.cpp//Ijustwanttoshowthedifferenceinbehavior//betweenrawpointerandsmartpointer(bothhasincompletetype)//when

c++ - 使用 'auto' 和 std::minmax 观察奇怪的行为

我在SUSEEnterpriseLinux11上使用GCC4.7.2和Boost1.58.0。我有以下代码片段,它基本上通过多边形列表来计算它们的长度/宽度。在std::minmax函数中使用“auto”关键字时,我看到了奇怪的输出。为了进行比较,我还声明了第二个变量,其中明确声明了类型(即dim与dim1)。namespacegtl=boost::polygon;typedefgtl::polygon_90_dataLayoutPolygon;typedefgtl::rectangle_dataLayoutRectangle;staticLayoutFeatureVeccalc_st

c++ - 在初始化列表中引用类成员是未定义的行为吗?

假设我有以下内容:classA{Bmember1;Cmember2;public:A();};classB{public:C&ref_to_c;B(C&ref_to_c);};classC{...};B要求在其构造函数中提供对C的引用。如果A类提供C,那么指定A的初始化列表如下是否合法...A():member1(B(member2)){}也就是说,member2是否存在于initialiserlist阶段,还是这个undefinedbehavior? 最佳答案 初始化如下:5Initializationshallproceedin

c++ - 如果使用优化 (-O2, -O3),为什么这段代码的行为会有所不同?

我不得不编写一些检查例程,如果使用-O0、-O1、-O2或-O3,它们的行为似乎会有所不同。下面我创建了一个适用于-O0和-O1的最小示例。但是使用-O2或-O3行为发生了变化。在-O0和-O1的情况下,for循环递增整数,并且第一次达到最大值时,会发生溢出并触发检查例程。在另一种情况下,for循环永远不会中断,尽管整数变为负数。代码#includeinlineboolcheck(constinti){if(i为什么允许编译器优化它?尝试使用gcc、clang和icc,只有icc在所有优化变体中都正确,其他两个没有。 最佳答案 Si

c++ - 为什么 std::accumulate 对于标准数组会有这样的行为?

我刚接触C++,我想我已经掌握了指针,但是std::accumulate()让我感到困惑。给定数组:inta[3]={5,6,7};我想用std::accumulate()对数组的值求和,所以我向它传递了一个指向第一个元素的指针,然后是最后一个元素,然后是蓄能器。std::accumulate(a,a+2,0);std::accumulate(&a[0],&a[2],0);糟糕:其中任何一个只返回前两个元素的总和:11。另一方面,如果第二个参数是一个无意义的指针,就超出了范围......std::accumulate(a,a+3,0);std::accumulate(&a[0],&a[

c++ - std::atomic<uint_least8_t> 行为

在一个系统上:typedefunsignedcharuint8_t;typedefunsignedshortuint16_t;std::atomic::is_always_lock_free//=>falsestd::atomic::is_always_lock_free//=>true据我了解,类型std::atomic将是8位并且不是无锁的。如果是这样,如果我想要一个至少8位且始终无锁的原子类型,我应该怎么写?(假设存在这种类型)是否有比以下更好的选择:std::atomic::is_always_lock_free,uint8_t,uint16_t>::type>(为简单起见,我

c++ - 64 位构建中 STL/OpenMP 的奇怪并发问题

当我在64位调试配置中构建我们的项目之一时,我遇到了一个奇怪的问题。它似乎产生了一些奇怪的行为,看起来有点像单个迭代器多次递增。我已将其缩小为以下测试代码:#include#define_HAS_ITERATOR_DEBUGGING0#include#includeintmain(intargc,constchar*argv[]){std::vectorv;for(intj=0;js;std::vector::const_iteratorbegin=v.begin(),end=v.end();s.insert(begin,end);//afterthislinesshouldconta

奇怪的Facebook API错误?

我网站的本地和预生产版具有相同的配置和相同的源代码。由于某种原因,预生产版本无法与FacebookAPI通信。当我尝试使用Facebook登录时,我会遇到如此奇怪的错误:Google将错误消息转换为这样:“您无法加载URL:该应用程序区域中不包含URL。要下载此URL,请在应用程序设置中的“应用程序域”字段中添加所有域和子域的所有域和子订单。我试图将我的域添加到列表中,但这无济于事。事实是,我被困住了,我将感谢任何暗示该错误的提示。P.S.另外,我不知道为什么该错误消息是在阿拉伯语中-来自德国的服务器,并且具有en_us.utf8语言环境。更新设置基本(域名更改)看答案最后,我找到了这个问题。

c++ - 复制对象时,带有 MSVC 2010 Debug 的 OpenMP 会生成奇怪的错误

我有一个相当复杂的程序,在MSVC2010Debug模式下使用OpenMP构建时会遇到奇怪的行为。我已尽力构建以下最小的工作示例(尽管它不是真正最小的),它缩小了真实程序的结构。#include#include//AclasstakepointstothewholecollectionandapositionOnlyallowaccess//totheelementsatthatposiiton.Itprovideread-onlyaccesstoquerysome//informationaboutthewholecollectionclassElement{public:Eleme

c++ - 混合复合模式和奇怪的重复模板模式的可能性

我有一个复合模式实现,用于GUI组件:classCObject{private:CObject*m_pParent;CObjectContainer*m_pChildren;voidprivate_foo(){this->foo();//Callsprivate_fooforeachchildincontainer.m_pChildren->foo();}public:virtualvoidfoo(){//emptyforbaseclass}virtualCObject*duplicate(){//DoduplicationcodereturnnewCObject(*this);}vi